home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / lib / c / crt / sun3.md / RCS / modf.s,v < prev    next >
Text File  |  1988-06-19  |  1KB  |  58 lines

  1. head     1.1;
  2. access   ;
  3. symbols  ;
  4. locks    ; strict;
  5. comment  @# @;
  6.  
  7.  
  8. 1.1
  9. date     88.06.19.14.35.38;  author ouster;  state Exp;
  10. branches ;
  11. next     ;
  12.  
  13.  
  14. desc
  15. @@
  16.  
  17.  
  18.  
  19. 1.1
  20. log
  21. @Initial revision
  22. @
  23. text
  24. @    .data
  25. /*    .asciz    "@@(#)modf.s 1.1 86/09/24 SMI"    */
  26.     .text
  27.  
  28. |       Copyright (c) 1986 by Sun Microsystems, Inc.
  29.  
  30. #include "fpcrtInt.h"
  31.  
  32. /*
  33.  * double
  34.  * modf( value, iptr)
  35.  *      double value, *iptr;
  36.  *
  37.  * return a value v and stores through iptr a value i s.t.:
  38.  *    v + i == value, and
  39.  *4.2 BSD:
  40.  *    1 > v >= 0
  41.  *    Note that for -0.5 < value < 0, v may not be representable.
  42.  *System V:
  43.     v has sign of value and |v| < 1.
  44.     v is always exact.
  45.  */
  46.  
  47. ENTRY(modf)
  48.     moveml    PARAM,d0/d1    | d0/d1 gets x.
  49. |    jsr    Vfloord        | d0/d1 gets floor(x). 4.2 BSD definition.
  50.      jsr    Faintd        | d0/d1 gets aint(x). System V definition.
  51.     movl    PARAM3,a0    | a0 gets address of *iptr.
  52.     moveml    d0/d1,a0@@    | *iptr gets floor(x).
  53.     lea    PARAM,a0    | a0 points to x.
  54.     jsr    Fsubd        | d0/d1 gets floor(x)-x.
  55.     bchg    #31,d0        | d0/d1 gets x-floor(x) >= 0 unless x is inf or nan.
  56.     RET
  57. @
  58.